using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos;
using Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.ServiceImplementation.Translator;

namespace Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.ServiceImplementation
{
    /// <summary>
    /// Classe de implementacao de contrato de servico "Produto".
    /// </summary>
    [ServiceBehavior(Name = "Produto", Namespace = "http://www.bovespa.com.br/Produto/ServiceContracts/2010/08")]
    public class Produto : Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.IProduto
    {
        #region IProduto Members

        /// <summary>
        /// Recupera uma lista de entidades de negocio "Produto".
        /// </summary>
        /// <returns></returns>
        public List<Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.Produto> ConsultarProduto()
        {
            Negocio.Produto negocio = new Negocio.Produto();
            return new TradutorProduto().Traduzir(negocio.ConsultarProduto());
        }

        /// <summary>
        /// Recupera uma lista de entidades de negocio "Produto" por hierarquia.
        /// </summary>
        /// <returns></returns>
        public List<Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.Produto> ConsultarProdutoPorHierarquia()
        {
            Negocio.Produto negocio = new Negocio.Produto();
            return new TradutorProduto().Traduzir(negocio.ConsultarProdutoPorHierarquia());
        }

        /// <summary>
        /// Recupera uma lista de entidades de negocio "Produto".
        /// </summary>
        /// <param name="entrada"></param>
        /// <returns></returns>
        /*public List<Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.Produto> ConsultarProduto(int entrada)
        {
            Negocio.Produto negocio = new Negocio.Produto();
            return new TradutorProduto().Traduzir(negocio.ConsultarProduto(entrada));
        }*/

        /// <summary>
        /// Recupera uma entidade de negocio "Produto".
        /// </summary>
        /// <param name="entrada"></param>
        /// <returns></returns>
        public Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.Produto ObterProduto(int entrada)
        {
            Negocio.Produto negocio = new Negocio.Produto();
            return new TradutorProduto().Traduzir(negocio.ObterProduto(entrada));
        }

        /// <summary>
        /// Persiste uma entidade de negocio "Produto".
        /// </summary>
        /// <param name="entrada"></param>
        public void InserirProduto(Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.Produto entrada)
        {
            Negocio.Produto negocio = new Negocio.Produto();
            negocio.InserirProduto(new TradutorProduto().Traduzir(entrada));
        }

        /// <summary>
        /// Remove uma entidade de negocio "Produto".
        /// </summary>
        /// <param name="entrada"></param>
        public void ExcluirProduto(int entrada)
        {
            Negocio.Produto negocio = new Negocio.Produto();
            negocio.ExcluirProduto(entrada);
        }

        /// <summary>
        /// Atualiza uma entidade de negocio "Produto".
        /// </summary>
        /// <param name="entrada"></param>
        public void AtualizarProduto(Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.Produto entrada)
        {
            Negocio.Produto negocio = new Negocio.Produto();
            negocio.AtualizarProduto(new TradutorProduto().Traduzir(entrada));
        }

        #endregion
    }
}
